package com.ict.ms.realTime.facade.api;

import java.util.List;
import java.util.Map;

import com.ict.ms.realTime.facade.dto.CountryTPCount;
import com.ict.ms.realTime.facade.dto.ResultObj;
import com.ict.ms.realTime.facade.model.AppointTarget;
import com.ict.ms.realTime.facade.model.AppointTargetFuseRst;
import com.ict.ms.realTime.facade.model.GridShipsCount;
import com.ict.ms.realTime.facade.model.RealTimeMMSI;

public interface IRealTimeMMSIService {

	List<RealTimeMMSI> getDegInfo(double ldlon, double ldlat, double rulon, double rulat, int limit, int timeout,
			int mode);

	/**
	 * 重点目标
	 * @param limit
	 * @param timeout
	 * @return
	 */
	ResultObj getImportantTarget(int limit, int timeout);

	/**
	 * 获取指定船舶信息
	 *
	 * @param num
	 * @param mode
	 * @return
	 */
	AppointTarget getAppointTarget(int num, int mode);

	ResultObj getwarsshipositionFuse(int mmsi);

	/**
	 * 获取综合模式下指定船舶信息，带来源及ID
	 *
	 * @param num
	 * @return
	 */
	AppointTargetFuseRst getAppointTargetSource(int num);

	/**
	 * 获取目标档案信息
	 *
	 * @param shipid
	 * @return
	 */
	ResultObj getListShipBaseInfo(String shipid, String shiptype);

	String[] Split_StrArray(String str) throws Exception;

	List<AppointTarget> realTimeTargetGet();

	/**
	 * 实时区域统计
	 *
	 * @param ldlon
	 * @param ldlat
	 * @param rulon
	 * @param rulat
	 * @param mode  0：融合模式，1：原始模式
	 * @return
	 */
	List<CountryTPCount> getSquAreaCount(double ldlon, double ldlat, double rulon, double rulat, int mode);

	/**
	 * 获取区域目标总数
	 *
	 * @param ldlon
	 * @param ldlat
	 * @param rulon
	 * @param rulat
	 * @param mode  0：融合模式，1：原始模式
	 * @return
	 */
	int areaCount(double ldlon, double ldlat, double rulon, double rulat, int mode);

	/**
	 * 获取栅格船舶
	 *
	 * @return
	 */
	ResultObj getGridShips(Integer timeout, int mode);

	/**
	 * @param key
	 * @param value
	 * @return
	 */
	GridShipsCount mapKeyValueToObj(String key, int value);

	/**
	 * 栅格统计
	 *
	 * @return
	 */
	void hashShipCount(Map<String, Integer> map, String key);

	/**
	 * 获取栅格船舶速度和
	 *
	 * @return
	 */
	ResultObj getGridShipsSumSpeed(Integer timeout, int mode);

	/**
	 * 速度和统计
	 *
	 * @return
	 */
	void hashShipCountSumSpeed(Map<String, Integer> map, String key, int speed);

	/**
	 * 获取栅格船舶速度平均值统计
	 *
	 * @return
	 */
	ResultObj getGridShipsAvgSpeed(Integer timeout, int mode);

}